【PHP/演習問題】parent[2]

【PHP/演習問題】parent[2]

問題

次の実行結果になるプログラムを作成してください。
なお、下記条件を満たすものとします。

  • 下記表の3つのクラスを作成する
  • 実行結果になるように各クラスのインスタンスを使う
クラス 英記 継承元 フィールド メソッド
チケットクラス Ticket なし $price(料金) info()
→ $priceの値を出力
ライブチケット LiveTicket Ticket $place(場所) info()
→ 場所と料金を出力
※ スーパークラスのinfoメソッドを利用する
ライブ配信チケット LiveStreamingTicket Ticket $url(URL) info()
→ URLと料金を出力
※ スーパークラスのinfoメソッドを利用する
===== チケット    =====
料金 : 5000円
===== ライブチケット =====
料金 : 8000円
場所 : ライブハウス
===== ライブ配信   =====
料金 : 3000円
URL : https://it-hack.net/live-streaming

解答例

<?php

class Ticket {
    
    public $price;
    
    public function __construct( $price ) {
        $this->price = $price;
    }
    
    public function info() {
        echo '料金 : '.$this->price."円\n";
    }
    
}

class LiveTicket extends Ticket {
    
    public $place;
    
    public function __construct( $price, $place ) {
        parent::__construct($price);
        $this->place = $place;
    }
    
    public function info() {
        echo '料金 : '.$this->price."円\n";
        echo '場所 : '.$this->place."\n";
    }
    
}

class LiveStreamingTicket extends Ticket {
    
    public $url;
    
    public function __construct( $price, $url ) {
        parent::__construct($price);
        $this->url = $url;
    }
    
    public function info() {
        echo '料金 : '.$this->price."円\n";
        echo 'URL : '.$this->url."\n";
    }
    
}

echo "===== チケット    =====\n";
$ticket = new Ticket(5000);
$ticket->info();

echo "===== ライブチケット =====\n";
$live_ticket = new LiveTicket(8000, 'ライブハウス');
$live_ticket->info();

echo "===== ライブ配信   =====\n";
$live_streaming_ticket = new LiveStreamingTicket(3000, 'https://it-hack.net/live-streaming');
$live_streaming_ticket->info();

?>